#include <iostream>
#include <fstream>
#include <string>
#include "Student.h"

using namespace std;

// 全局变量，在main文件中声明，在task2文件中赋值
extern vector<Student> students; // 存储学生的向量

// 从文件中读取学生及其小车的信息
void readStudentCarInfoFromFile(const string &filename) {
    ifstream file(filename);
    if (!file.is_open()) {
        cerr << "无法打开文件 " << filename << endl;
        return;
    }

    string line;
    Student student;
    bool capture = false;

    while (getline(file, line)) {
        if (line.find("学生学号:") != string::npos) {
            if (capture) {
                students.push_back(student);
            }
            capture = true;
            student.setID(line.substr(line.find(":") + 2));
        } else if (line.find("学生姓名:") != string::npos && capture) {
            student.setName(line.substr(line.find(":") + 2));
        } else if (line.find("被分配的小车编号:") != string::npos && capture) {
            student.car.setID(line.substr(line.find(":") + 2));
        } else if (line.find("底盘编号:") != string::npos && capture) {
            student.car.underpan.setID(line.substr(line.find(":") + 2));
        } 
        // 读取其他属性省略...
        else if (line.find("----------------------------------------") != string::npos) {
            if (capture) {
                students.push_back(student);
                student = Student(); // 重置学生信息为下一个学生做准备
            }
            capture = false;
        }
    }

    if (capture) {
        students.push_back(student);
    }

    file.close();
}

// 显示相关信息
void task4_display_info() {
    cout << "读取出的文件相关信息如下:" << endl;
    for (Student &student : students) {
        cout << "学生学号：" << student.id << "  学生姓名：" << student.name << " 该学生分配的小车信息如下：" << endl;
        student.car.print(); // 调用小车的print方法打印详细信息
    }
}

// 按键控制显示
void task4() {
    if (students.empty()) {
        cout << "没有学生信息。" << endl;
        return;
    }

    int current = 0; // 当前显示的学生索引
    int size = students.size();
    char command;

    do {
        cout << "当前显示的学生信息：" << endl;
        cout << "学生学号：" << students[current].id
             << "  学生姓名：" << students[current].name << endl;
        students[current].car.print(); // 调用小车的print方法打印详细信息

        cout << "按 'n' 显示下一辆小车信息，按 'p' 显示上一辆小车信息，按其他键退出：";
        cin >> command;

        if (command == 'n' && current < size - 1) {
            current++;
        } else if (command == 'p' && current > 0) {
            current--;
        } else {
            break; // 退出循环
        }

        // 显示提示信息
        if (current == 0 && command == 'p') {
            cout << "这已经是第一辆小车了。" << endl;
        } else if (current == size - 1 && command == 'n') {
            cout << "这已经是最后一辆小车了。" << endl;
        }
    } while (command == 'n' || command == 'p');

    cout << "退出显示。" << endl;
}